用於標記一個類作為控制器(Controller)。在Spring MVC中,控制器用於處理用戶端的HTTP請求並返回相應的數據
方法的返回值不再被視圖解析器處理,而是直接寫入HTTP響應的正文中。這意味著方法返回的數據將作為原始的數據格式(例如JSON、XML等)返回給用戶端。
@Controller
@RequestMapping("/api/v1")
public class HelloWorld {
//方法1
@GetMapping("/hello1")
public ResponseEntity<String> hello1(){
return ResponseEntity.ok("hello1");
}
//方法2
@GetMapping("/hello2")
@ResponseBody
public String hello2(){
return "hello2";
}
//錯誤寫法
@GetMapping("/hello3")
public String hello3(){
return "hello3";
}
}
若使用@Controller沒有配合@ResponseBody使用或是ResponseEntity,Spring會認為這個字符串是視圖名稱(如:"hello3.html"或"hello3.jsp"),因沒找到視而報錯錯
@Controller與@ResponseBody結合(基本上都用他)
用於指定當用戶端發送特定的HTTP請求時,應該調用哪個方法來處理該請求。
表GET請求。
表POST請求。
表PUT請求。
表示PATCH請求。
表DELETE請求。
負責處理業務邏輯的執行與調用數據訪問層(如JPA Repositories或DAOs)來執行與數據庫交互的操作。
負責處理與數據庫或其他永久存儲層進行交互的操作。通常,數據訪問層包含了與數據庫交互的CRUD操作(創建Create、讀取Read、更新Update和刪除Delete),以及其他與數據存取相關的任務。
用於標記任何普通的Java類,讓Spring容器能夠自動掃描和識別這些組件,並將它們納入應用程序的上下文中。
標註當前類別是配置類,通常類別內放置有關@Bean標籤內容。
自定義物件提供的方式,透過此標籤此實例會被加入spring 容器中,通常放置於 @Configuration標籤的類別內。
@Configuration
public class AppConfig {
@Bean
public UserPreferences userPreferences() {
return new UserPreferences();
}
}
其本質是對方法前後進行攔截,然后在目標方法開始之前創建或者加入一個事物,在執行完目標方法之後根據執行情況提交或者回滾事務。
銀行轉帳:在銀行轉帳操作中,涉及到兩個帳戶的資金變動。這個過程需要保證轉帳操作是一個原子單元,要麼轉帳成功並更新兩個帳戶的餘額,要麼轉帳失敗並恢復到之前的狀態。
優點:可以減少許多資料庫管理的程式碼,可以直接對資料進行變更。